/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package beans;

import bc.AlumnoFacadeLocal;
import be.Alumno;
import be.EstadoAlumno;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import org.primefaces.event.FileUploadEvent;

/**
 *
 * @author root
 */
@SessionScoped
@ManagedBean
public class ManagedBeanAlumno implements Serializable{
   

    @EJB
    private AlumnoFacadeLocal alumnoFacade;
    private Alumno alumno;
    private List<Alumno> lista ;
private static final int BUFFER_SIZE = 100000000;
    public ManagedBeanAlumno() {
    alumno= new Alumno();   
    }

    public Alumno getAlumno() {
        return alumno;
    }

    public void setAlumno(Alumno alumno) {
        this.alumno = alumno;
    }

    public List<Alumno> getLista() {
        // vamos a resetar a la lista
        lista = new LinkedList<Alumno>();
        // el try catch es para capturar errores
        try {
            // le decimos al señor Facade que nos Traiga todas los  alumnos en la lista
            
          lista =  alumnoFacade.findAll();
        } catch (Exception e) {
        }
        
        // retornamos nuestra lista llena con alumnos
        return lista;
    }

    public void setLista(List<Alumno> lista) {
        this.lista = lista;
    }
    
    
public String nuevo(){
    alumno = new  Alumno();
//ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext(); System.out.println("para ls" +extContext.getRealPath("//mantenimiento//FOTOS_ALUMNOS"));
    return "nuevo_alumno";
}
public String editar(){
return "editar_alumno?faces-redirect=true";
} 
//  VAMOS  CREAR UN NUEVO ALUMNO
public String crear_nuevo_alumno(){
    try {
        alumno.setFechaRegistroAlumno(new Date());
        // AQUI VAMOS A  ASIGNARLE EL ESTADO AL ALUMNO
        // OVIAMENTE CUANDO SE REGISTRA EL ESTADO VA A SER 1 = ACTIVO 
        // MAS INFORMACION SOBRE LOS ESTADOS SE ENCUENTRAN EN inserts_saca.sql
        alumno.setEstadoAlumno(new EstadoAlumno(1));
        alumnoFacade.create(alumno);
    } catch (Exception e) {
        e.printStackTrace();
    }
    // si ya lo creamos entonces retornamos a nuestra lista de alumnos 
    // para verificar que este creado
return "alumnos?faces-redirect=true";
// lo que aparece como : faces-redirect=true   es para borrar el rastro de regreso
}
    
public String editar_alumno(){
    try {
       
        alumnoFacade.edit(alumno);
    } catch (Exception e) {
        e.printStackTrace();
    }
   
return "alumnos?faces-redirect=true";

}

public void handleFileUpload(FileUploadEvent event) {  
       
ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
Date datos = new Date();
 SimpleDateFormat formato = new SimpleDateFormat("ddMMyyyymmss");
 StringBuilder cadena = new StringBuilder( formato.format( datos ) );
File result = new File(extContext.getRealPath("//mantenimiento//FOTOS_ALUMNOS") + "//"+cadena.toString()+ event.getFile().getFileName().trim().replaceAll(" ", ""));

try {
FileOutputStream fileOutputStream = new FileOutputStream(result);
byte[] buffer = new byte[BUFFER_SIZE];
int bulk;
InputStream inputStream = event.getFile().getInputstream();
while (true) {
bulk = inputStream.read(buffer);
if (bulk < 0) {
break;
}

fileOutputStream.write(buffer, 0, bulk);
fileOutputStream.flush();
}
fileOutputStream.close();
inputStream.close();
FacesMessage msg = new FacesMessage("LA IMAGEN : ", event.getFile().getFileName() + " SE SUBIO CON EXITO");
        FacesContext.getCurrentInstance().addMessage(null, msg);
     //   pedido.setRutaFicheroTrabajo(extContext.getRealPath("//WEB-INF//upload") + "/" + event.getFile().getFileName());
      alumno.setRutaFotoAlumno("mantenimiento/FOTOS_ALUMNOS/"+cadena.toString()+event.getFile().getFileName().trim().replaceAll(" ", ""));
} catch (IOException e) {
e.printStackTrace();
FacesMessage error = new FacesMessage("OCURRIO UN ERROR" + e.getMessage());
FacesContext.getCurrentInstance().addMessage(null, error);
}
    }  
}
